﻿using MailBox.App_Code.dto;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Web;

namespace MailBox.App_Code
{
    public class Common
    {
        static log4net.ILog logs_info = log4net.LogManager.GetLogger("InfoRollingLogFileAppender");
        static log4net.ILog logs_error = log4net.LogManager.GetLogger("ErrorRollingLogFileAppender");
        static log4net.ILog logs_tracking = log4net.LogManager.GetLogger("TrackingEmailAppender");
        public enum logType
        {
            info, error, tracking
        }
        public static void logs(UserLoginDTO user, string content, Exception ex, logType type)
        {
            if (type == logType.info)
                logs_info.Info(content);
            else
                if (type == logType.tracking)
                    logs_tracking.Info(content);
                    else logs_error.Error(content, ex);
        }
        public static DateTime? convertStringToDate(string strDate)
        {
            try
            {
                int day = int.Parse(strDate.Substring(0, 2));
                int month = int.Parse(strDate.Substring(3, 2));
                int year = int.Parse(strDate.Substring(6, 4));
                DateTime dDate = new DateTime(year, month, day, 00, 00, 00);
                return dDate;
            }
            catch// (Exception ex)
            {
                //logs.Error(userLogin.Username + "-Client - btnAdd_Click", ex);
                //pnError.Visible = true;
                //lblError.Text = "Ngày sinh không hợp lệ!" + ex.Message.ToString();
            }
            return null;
        }
        /********************************************/
        /*                      MD5
        /********************************************/
        public static string GetMd5Hash(string input)
        {
            MD5 md5Hash = MD5.Create();
            // Convert the input string to a byte array and compute the hash. 
            byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));

            // Create a new Stringbuilder to collect the bytes 
            // and create a string.
            StringBuilder sBuilder = new StringBuilder();

            // Loop through each byte of the hashed data  
            // and format each one as a hexadecimal string. 
            for (int i = 0; i < data.Length; i++)
            {
                sBuilder.Append(data[i].ToString("x2"));
            }

            // Return the hexadecimal string. 
            return sBuilder.ToString();
        }

        // Verify a hash against a string. 
        public static bool VerifyMd5Hash(string input, string hash)
        {
            // Hash the input. 
            string hashOfInput = GetMd5Hash(input);

            // Create a StringComparer an compare the hashes.
            StringComparer comparer = StringComparer.OrdinalIgnoreCase;

            if (0 == comparer.Compare(hashOfInput, hash))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        
    }
}